﻿using System.Drawing;

namespace MissionPlanner.Utilities
{
    public class XTermRBGColors
    {
        public string Xterm_Name;
        public int Xterm_Num;
        private int Rgb_Red;
        private int Rgb_Green;
        private int Rgb_Blue;

        public XTermRBGColors(int number, string name, int red, int green, int blue)
        {
            Xterm_Num = number;
            Xterm_Name = name;
            Rgb_Red = red;
            Rgb_Green = green;
            Rgb_Blue = blue;
        }

        public static readonly XTermRBGColors[] xTermRBGColors = new XTermRBGColors[]
        {
            new XTermRBGColors(0, "Black", 0, 0, 0),
            new XTermRBGColors(1, "Maroon", 128, 0, 0),
            new XTermRBGColors(2, "Green", 0, 128, 0),
            new XTermRBGColors(3, "Olive", 128, 128, 0),
            new XTermRBGColors(4, "Navy", 0, 0, 128),
            new XTermRBGColors(5, "Purple", 128, 0, 128),
            new XTermRBGColors(6, "Teal", 0, 128, 128),
            new XTermRBGColors(7, "Silver", 192, 192, 192),
            new XTermRBGColors(8, "Grey", 128, 128, 128),
            new XTermRBGColors(9, "Red", 255, 0, 0),
            new XTermRBGColors(10, "Lime", 0, 255, 0),
            new XTermRBGColors(11, "Yellow", 255, 255, 0),
            new XTermRBGColors(12, "Blue", 0, 0, 255),
            new XTermRBGColors(13, "Fuchsia", 255, 0, 255),
            new XTermRBGColors(14, "Aqua", 0, 255, 255),
            new XTermRBGColors(15, "White", 255, 255, 255),
            new XTermRBGColors(16, "Grey0", 0, 0, 0),
            new XTermRBGColors(17, "NavyBlue", 0, 0, 95),
            new XTermRBGColors(18, "DarkBlue", 0, 0, 135),
            new XTermRBGColors(19, "Blue3", 0, 0, 175),
            new XTermRBGColors(20, "Blue3", 0, 0, 215),
            new XTermRBGColors(21, "Blue1", 0, 0, 255),
            new XTermRBGColors(22, "DarkGreen", 0, 95, 0),
            new XTermRBGColors(23, "DeepSkyBlue4", 0, 95, 95),
            new XTermRBGColors(24, "DeepSkyBlue4", 0, 95, 135),
            new XTermRBGColors(25, "DeepSkyBlue4", 0, 95, 175),
            new XTermRBGColors(26, "DodgerBlue3", 0, 95, 215),
            new XTermRBGColors(27, "DodgerBlue2", 0, 95, 255),
            new XTermRBGColors(28, "Green4", 0, 135, 0),
            new XTermRBGColors(29, "SpringGreen4", 0, 135, 95),
            new XTermRBGColors(30, "Turquoise4", 0, 135, 135),
            new XTermRBGColors(31, "DeepSkyBlue3", 0, 135, 175),
            new XTermRBGColors(32, "DeepSkyBlue3", 0, 135, 215),
            new XTermRBGColors(33, "DodgerBlue1", 0, 135, 255),
            new XTermRBGColors(34, "Green3", 0, 175, 0),
            new XTermRBGColors(35, "SpringGreen3", 0, 175, 95),
            new XTermRBGColors(36, "DarkCyan", 0, 175, 135),
            new XTermRBGColors(37, "LightSeaGreen", 0, 175, 175),
            new XTermRBGColors(38, "DeepSkyBlue2", 0, 175, 215),
            new XTermRBGColors(39, "DeepSkyBlue1", 0, 175, 255),
            new XTermRBGColors(40, "Green3", 0, 215, 0),
            new XTermRBGColors(41, "SpringGreen3", 0, 215, 95),
            new XTermRBGColors(42, "SpringGreen2", 0, 215, 135),
            new XTermRBGColors(43, "Cyan3", 0, 215, 175),
            new XTermRBGColors(44, "DarkTurquoise", 0, 215, 215),
            new XTermRBGColors(45, "Turquoise2", 0, 215, 255),
            new XTermRBGColors(46, "Green1", 0, 255, 0),
            new XTermRBGColors(47, "SpringGreen2", 0, 255, 95),
            new XTermRBGColors(48, "SpringGreen1", 0, 255, 135),
            new XTermRBGColors(49, "MediumSpringGreen", 0, 255, 175),
            new XTermRBGColors(50, "Cyan2", 0, 255, 215),
            new XTermRBGColors(51, "Cyan1", 0, 255, 255),
            new XTermRBGColors(52, "DarkRed", 95, 0, 0),
            new XTermRBGColors(53, "DeepPink4", 95, 0, 95),
            new XTermRBGColors(54, "Purple4", 95, 0, 135),
            new XTermRBGColors(55, "Purple4", 95, 0, 175),
            new XTermRBGColors(56, "Purple3", 95, 0, 215),
            new XTermRBGColors(57, "BlueViolet", 95, 0, 255),
            new XTermRBGColors(58, "Orange4", 95, 95, 0),
            new XTermRBGColors(59, "Grey37", 95, 95, 95),
            new XTermRBGColors(60, "MediumPurple4", 95, 95, 135),
            new XTermRBGColors(61, "SlateBlue3", 95, 95, 175),
            new XTermRBGColors(62, "SlateBlue3", 95, 95, 215),
            new XTermRBGColors(63, "RoyalBlue1", 95, 95, 255),
            new XTermRBGColors(64, "Chartreuse4", 95, 135, 0),
            new XTermRBGColors(65, "DarkSeaGreen4", 95, 135, 95),
            new XTermRBGColors(66, "PaleTurquoise4", 95, 135, 135),
            new XTermRBGColors(67, "SteelBlue", 95, 135, 175),
            new XTermRBGColors(68, "SteelBlue3", 95, 135, 215),
            new XTermRBGColors(69, "CornflowerBlue", 95, 135, 255),
            new XTermRBGColors(70, "Chartreuse3", 95, 175, 0),
            new XTermRBGColors(71, "DarkSeaGreen4", 95, 175, 95),
            new XTermRBGColors(72, "CadetBlue", 95, 175, 135),
            new XTermRBGColors(73, "CadetBlue", 95, 175, 175),
            new XTermRBGColors(74, "SkyBlue3", 95, 175, 215),
            new XTermRBGColors(75, "SteelBlue1", 95, 175, 255),
            new XTermRBGColors(76, "Chartreuse3", 95, 215, 0),
            new XTermRBGColors(77, "PaleGreen3", 95, 215, 95),
            new XTermRBGColors(78, "SeaGreen3", 95, 215, 135),
            new XTermRBGColors(79, "Aquamarine3", 95, 215, 175),
            new XTermRBGColors(80, "MediumTurquoise", 95, 215, 215),
            new XTermRBGColors(81, "SteelBlue1", 95, 215, 255),
            new XTermRBGColors(82, "Chartreuse2", 95, 255, 0),
            new XTermRBGColors(83, "SeaGreen2", 95, 255, 95),
            new XTermRBGColors(84, "SeaGreen1", 95, 255, 135),
            new XTermRBGColors(85, "SeaGreen1", 95, 255, 175),
            new XTermRBGColors(86, "Aquamarine1", 95, 255, 215),
            new XTermRBGColors(87, "DarkSlateGray2", 95, 255, 255),
            new XTermRBGColors(88, "DarkRed", 135, 0, 0),
            new XTermRBGColors(89, "DeepPink4", 135, 0, 95),
            new XTermRBGColors(90, "DarkMagenta", 135, 0, 135),
            new XTermRBGColors(91, "DarkMagenta", 135, 0, 175),
            new XTermRBGColors(92, "DarkViolet", 135, 0, 215),
            new XTermRBGColors(93, "Purple", 135, 0, 255),
            new XTermRBGColors(94, "Orange4", 135, 95, 0),
            new XTermRBGColors(95, "LightPink4", 135, 95, 95),
            new XTermRBGColors(96, "Plum4", 135, 95, 135),
            new XTermRBGColors(97, "MediumPurple3", 135, 95, 175),
            new XTermRBGColors(98, "MediumPurple3", 135, 95, 215),
            new XTermRBGColors(99, "SlateBlue1", 135, 95, 255),
            new XTermRBGColors(100, "Yellow4", 135, 135, 0),
            new XTermRBGColors(101, "Wheat4", 135, 135, 95),
            new XTermRBGColors(102, "Grey53", 135, 135, 135),
            new XTermRBGColors(103, "LightSlateGrey", 135, 135, 175),
            new XTermRBGColors(104, "MediumPurple", 135, 135, 215),
            new XTermRBGColors(105, "LightSlateBlue", 135, 135, 255),
            new XTermRBGColors(106, "Yellow4", 135, 175, 0),
            new XTermRBGColors(107, "DarkOliveGreen3", 135, 175, 95),
            new XTermRBGColors(108, "DarkSeaGreen", 135, 175, 135),
            new XTermRBGColors(109, "LightSkyBlue3", 135, 175, 175),
            new XTermRBGColors(110, "LightSkyBlue3", 135, 175, 215),
            new XTermRBGColors(111, "SkyBlue2", 135, 175, 255),
            new XTermRBGColors(112, "Chartreuse2", 135, 215, 0),
            new XTermRBGColors(113, "DarkOliveGreen3", 135, 215, 95),
            new XTermRBGColors(114, "PaleGreen3", 135, 215, 135),
            new XTermRBGColors(115, "DarkSeaGreen3", 135, 215, 175),
            new XTermRBGColors(116, "DarkSlateGray3", 135, 215, 215),
            new XTermRBGColors(117, "SkyBlue1", 135, 215, 255),
            new XTermRBGColors(118, "Chartreuse1", 135, 255, 0),
            new XTermRBGColors(119, "LightGreen", 135, 255, 95),
            new XTermRBGColors(120, "LightGreen", 135, 255, 135),
            new XTermRBGColors(121, "PaleGreen1", 135, 255, 175),
            new XTermRBGColors(122, "Aquamarine1", 135, 255, 215),
            new XTermRBGColors(123, "DarkSlateGray1", 135, 255, 255),
            new XTermRBGColors(124, "Red3", 175, 0, 0),
            new XTermRBGColors(125, "DeepPink4", 175, 0, 95),
            new XTermRBGColors(126, "MediumVioletRed", 175, 0, 135),
            new XTermRBGColors(127, "Magenta3", 175, 0, 175),
            new XTermRBGColors(128, "DarkViolet", 175, 0, 215),
            new XTermRBGColors(129, "Purple", 175, 0, 255),
            new XTermRBGColors(130, "DarkOrange3", 175, 95, 0),
            new XTermRBGColors(131, "IndianRed", 175, 95, 95),
            new XTermRBGColors(132, "HotPink3", 175, 95, 135),
            new XTermRBGColors(133, "MediumOrchid3", 175, 95, 175),
            new XTermRBGColors(134, "MediumOrchid", 175, 95, 215),
            new XTermRBGColors(135, "MediumPurple2", 175, 95, 255),
            new XTermRBGColors(136, "DarkGoldenRod", 175, 135, 0),
            new XTermRBGColors(137, "LightSalmon3", 175, 135, 95),
            new XTermRBGColors(138, "RosyBrown", 175, 135, 135),
            new XTermRBGColors(139, "Grey63", 175, 135, 175),
            new XTermRBGColors(140, "MediumPurple2", 175, 135, 215),
            new XTermRBGColors(141, "MediumPurple1", 175, 135, 255),
            new XTermRBGColors(142, "Gold3", 175, 175, 0),
            new XTermRBGColors(143, "DarkKhaki", 175, 175, 95),
            new XTermRBGColors(144, "NavajoWhite3", 175, 175, 135),
            new XTermRBGColors(145, "Grey69", 175, 175, 175),
            new XTermRBGColors(146, "LightSteelBlue3", 175, 175, 215),
            new XTermRBGColors(147, "LightSteelBlue", 175, 175, 255),
            new XTermRBGColors(148, "Yellow3", 175, 215, 0),
            new XTermRBGColors(149, "DarkOliveGreen3", 175, 215, 95),
            new XTermRBGColors(150, "DarkSeaGreen3", 175, 215, 135),
            new XTermRBGColors(151, "DarkSeaGreen2", 175, 215, 175),
            new XTermRBGColors(152, "LightCyan3", 175, 215, 215),
            new XTermRBGColors(153, "LightSkyBlue1", 175, 215, 255),
            new XTermRBGColors(154, "GreenYellow", 175, 255, 0),
            new XTermRBGColors(155, "DarkOliveGreen2", 175, 255, 95),
            new XTermRBGColors(156, "PaleGreen1", 175, 255, 135),
            new XTermRBGColors(157, "DarkSeaGreen2", 175, 255, 175),
            new XTermRBGColors(158, "DarkSeaGreen1", 175, 255, 215),
            new XTermRBGColors(159, "PaleTurquoise1", 175, 255, 255),
            new XTermRBGColors(160, "Red3", 215, 0, 0),
            new XTermRBGColors(161, "DeepPink3", 215, 0, 95),
            new XTermRBGColors(162, "DeepPink3", 215, 0, 135),
            new XTermRBGColors(163, "Magenta3", 215, 0, 175),
            new XTermRBGColors(164, "Magenta3", 215, 0, 215),
            new XTermRBGColors(165, "Magenta2", 215, 0, 255),
            new XTermRBGColors(166, "DarkOrange3", 215, 95, 0),
            new XTermRBGColors(167, "IndianRed", 215, 95, 95),
            new XTermRBGColors(168, "HotPink3", 215, 95, 135),
            new XTermRBGColors(169, "HotPink2", 215, 95, 175),
            new XTermRBGColors(170, "Orchid", 215, 95, 215),
            new XTermRBGColors(171, "MediumOrchid1", 215, 95, 255),
            new XTermRBGColors(172, "Orange3", 215, 135, 0),
            new XTermRBGColors(173, "LightSalmon3", 215, 135, 95),
            new XTermRBGColors(174, "LightPink3", 215, 135, 135),
            new XTermRBGColors(175, "Pink3", 215, 135, 175),
            new XTermRBGColors(176, "Plum3", 215, 135, 215),
            new XTermRBGColors(177, "Violet", 215, 135, 255),
            new XTermRBGColors(178, "Gold3", 215, 175, 0),
            new XTermRBGColors(179, "LightGoldenrod3", 215, 175, 95),
            new XTermRBGColors(180, "Tan", 215, 175, 135),
            new XTermRBGColors(181, "MistyRose3", 215, 175, 175),
            new XTermRBGColors(182, "Thistle3", 215, 175, 215),
            new XTermRBGColors(183, "Plum2", 215, 175, 255),
            new XTermRBGColors(184, "Yellow3", 215, 215, 0),
            new XTermRBGColors(185, "Khaki3", 215, 215, 95),
            new XTermRBGColors(186, "LightGoldenrod2", 215, 215, 135),
            new XTermRBGColors(187, "LightYellow3", 215, 215, 175),
            new XTermRBGColors(188, "Grey84", 215, 215, 215),
            new XTermRBGColors(189, "LightSteelBlue1", 215, 215, 255),
            new XTermRBGColors(190, "Yellow2", 215, 255, 0),
            new XTermRBGColors(191, "DarkOliveGreen1", 215, 255, 95),
            new XTermRBGColors(192, "DarkOliveGreen1", 215, 255, 135),
            new XTermRBGColors(193, "DarkSeaGreen1", 215, 255, 175),
            new XTermRBGColors(194, "Honeydew2", 215, 255, 215),
            new XTermRBGColors(195, "LightCyan1", 215, 255, 255),
            new XTermRBGColors(196, "Red1", 255, 0, 0),
            new XTermRBGColors(197, "DeepPink2", 255, 0, 95),
            new XTermRBGColors(198, "DeepPink1", 255, 0, 135),
            new XTermRBGColors(199, "DeepPink1", 255, 0, 175),
            new XTermRBGColors(200, "Magenta2", 255, 0, 215),
            new XTermRBGColors(201, "Magenta1", 255, 0, 255),
            new XTermRBGColors(202, "OrangeRed1", 255, 95, 0),
            new XTermRBGColors(203, "IndianRed1", 255, 95, 95),
            new XTermRBGColors(204, "IndianRed1", 255, 95, 135),
            new XTermRBGColors(205, "HotPink", 255, 95, 175),
            new XTermRBGColors(206, "HotPink", 255, 95, 215),
            new XTermRBGColors(207, "MediumOrchid1", 255, 95, 255),
            new XTermRBGColors(208, "DarkOrange", 255, 135, 0),
            new XTermRBGColors(209, "Salmon1", 255, 135, 95),
            new XTermRBGColors(210, "LightCoral", 255, 135, 135),
            new XTermRBGColors(211, "PaleVioletRed1", 255, 135, 175),
            new XTermRBGColors(212, "Orchid2", 255, 135, 215),
            new XTermRBGColors(213, "Orchid1", 255, 135, 255),
            new XTermRBGColors(214, "Orange1", 255, 175, 0),
            new XTermRBGColors(215, "SandyBrown", 255, 175, 95),
            new XTermRBGColors(216, "LightSalmon1", 255, 175, 135),
            new XTermRBGColors(217, "LightPink1", 255, 175, 175),
            new XTermRBGColors(218, "Pink1", 255, 175, 215),
            new XTermRBGColors(219, "Plum1", 255, 175, 255),
            new XTermRBGColors(220, "Gold1", 255, 215, 0),
            new XTermRBGColors(221, "LightGoldenrod2", 255, 215, 95),
            new XTermRBGColors(222, "LightGoldenrod2", 255, 215, 135),
            new XTermRBGColors(223, "NavajoWhite1", 255, 215, 175),
            new XTermRBGColors(224, "MistyRose1", 255, 215, 215),
            new XTermRBGColors(225, "Thistle1", 255, 215, 255),
            new XTermRBGColors(226, "Yellow1", 255, 255, 0),
            new XTermRBGColors(227, "LightGoldenrod1", 255, 255, 95),
            new XTermRBGColors(228, "Khaki1", 255, 255, 135),
            new XTermRBGColors(229, "Wheat1", 255, 255, 175),
            new XTermRBGColors(230, "Cornsilk1", 255, 255, 215),
            new XTermRBGColors(231, "Grey100", 255, 255, 255),
            new XTermRBGColors(232, "Grey3", 8, 8, 8),
            new XTermRBGColors(233, "Grey7", 18, 18, 18),
            new XTermRBGColors(234, "Grey11", 28, 28, 28),
            new XTermRBGColors(235, "Grey15", 38, 38, 38),
            new XTermRBGColors(236, "Grey19", 48, 48, 48),
            new XTermRBGColors(237, "Grey23", 58, 58, 58),
            new XTermRBGColors(238, "Grey27", 68, 68, 68),
            new XTermRBGColors(239, "Grey30", 78, 78, 78),
            new XTermRBGColors(240, "Grey35", 88, 88, 88),
            new XTermRBGColors(241, "Grey39", 98, 98, 98),
            new XTermRBGColors(242, "Grey42", 108, 108, 108),
            new XTermRBGColors(243, "Grey46", 118, 118, 118),
            new XTermRBGColors(244, "Grey50", 128, 128, 128),
            new XTermRBGColors(245, "Grey54", 138, 138, 138),
            new XTermRBGColors(246, "Grey58", 148, 148, 148),
            new XTermRBGColors(247, "Grey62", 158, 158, 158),
            new XTermRBGColors(248, "Grey66", 168, 168, 168),
            new XTermRBGColors(249, "Grey70", 178, 178, 178),
            new XTermRBGColors(250, "Grey74", 188, 188, 188),
            new XTermRBGColors(251, "Grey78", 198, 198, 198),
            new XTermRBGColors(252, "Grey82", 208, 208, 208),
            new XTermRBGColors(253, "Grey85", 218, 218, 218),
            new XTermRBGColors(254, "Grey89", 228, 228, 228),
            new XTermRBGColors(255, "Grey93", 238, 238, 238)

        };

        public static Color GetColor(int xterm_code)
        {
            XTermRBGColors xterm_color = xTermRBGColors[xterm_code];
            Color c = Color.FromArgb(xterm_color.Rgb_Red, xterm_color.Rgb_Green, xterm_color.Rgb_Blue);
            return c;
        }

    }
}
